import java.util.Scanner;

/**
 * @Title: 单链表
 * @Author 贾金博
 * @Package PACKAGE_NAME
 * @Date 2024/3/5 20:22
 * @description: 数据结构的基本知识 还是比较常用的
 */
public class 单链表 {
    public static int value = 100010;
    public static int[] ne = new int[value]; // 存下一个的坐标的
    public static int[] v = new int[value]; // 存值的
    public static int index = 0;
    public static int head = -1; // 这个一定要等于 -1， -1表示的是终止的 表示的头的下标

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        while (n -- != 0) {
            String s = sc.next();
            //System.out.println("s = " + s);
            if("H".equals(s)) { // 向表头插入一个数
                int x = sc.nextInt();

                v[index] = x;
                ne[index] = head;
                head = index ++ ;

            } else if("I".equals(s)) { // insert 第 k 个插入的数后面插入一个数 x
                int k = sc.nextInt();
                int x = sc.nextInt();
                ne[index] = ne[k];
                v[index] = x;
                ne[k] = index ++;
            } else if("D".equals(s)) { // 删除第 k 个插入的数后面的数
                int k = sc.nextInt();
                if(k == 0) { // 删除的是头节点
                    head = ne[head];
                } else {
                    ne[k] = ne[ne[k]]; // 跳过当前数值
                }
            }
        }
       // System.out.println("header = " +head );
        for(int i = head; i != - 1; i = ne[i]) { // 这就是为什么 header = -1的原因了
            System.out.print(v[i] + " ");
        }
    }
}
